package tech.aistar.corejava.day17.anno;

import java.util.ArrayList;
import java.util.List;

/**
 * @author success
 * @version 1.0
 * @description:本类用来演示:内置的注解
 * @date 2019/8/7 0007
 */
@SuppressWarnings("unused")
public class BultInAnno {

    //@SuppressWarnings("unused")
    public static void main(String[] args) {
        //程序中定义了多余的变量

        //all - 抑制所有的警告
        //@SuppressWarnings("all")

        //unused - 定义了变量,但是从来没有使用过
        //@SuppressWarnings("unused")
        int i = 0;
        //System.out.println(i);

        //@Override - 方法的重写
        //@Deprecated - 标识元素已经过时

        //第二步:看注解中是否可以传入参数值
        //看这些内置的注解的源码

        @SuppressWarnings({"unused","rawtypes"})
        List list = new ArrayList();
        list.add(1);

        //@Override
        //int a = 10;

        /*
           需要理解的问题 - 注解是否可以传入属性值
           发现@SuppressWarnings里面只有
           String[] value();//注解中只有属性的概念,没有方法的概念 - 注解的属性值
           @SuppressWarnings({"unused","rawtypes"})

           有的注解中存在的是
           String value();
           @XXXX("单个属性值");

            由于@Override和@Deprecated注解中都不存在value属性,所以不能传入注解的属性值


            需要理解的第二个问题 - 注解可以使用的地方
            @Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE})
         */
    }
}
